* .insertion-cursor.
*/
-
#define MIN_ENTRY_WIDTH 150
#define MAX_ICONS 2
char_pixels = (MAX (char_width, digit_width) + PANGO_SCALE - 1) / PANGO_SCALE;
if (priv->width_chars < 0)
- min = MIN_ENTRY_WIDTH;
+ {
+ if (GTK_IS_SPIN_BUTTON (entry))
+ min = gtk_spin_button_get_text_width (GTK_SPIN_BUTTON (entry));
+ else
+ min = MIN_ENTRY_WIDTH;
+ }
else
- min = char_pixels * priv->width_chars;
+ {
+ min = char_pixels * priv->width_chars;
+ }
if (priv->max_width_chars < 0)
- nat = MIN_ENTRY_WIDTH;
+ nat = min;
else
nat = char_pixels * priv->max_width_chars;
#include <gtk/gtkentrycompletion.h>
#include <gtk/gtkentry.h>
#include <gtk/gtkcssgadgetprivate.h>
+#include <gtk/gtkspinbutton.h>
G_BEGIN_DECLS
void _gtk_entry_grab_focus (GtkEntry *entry,
gboolean select_all);
+/* in gtkspinbutton.c (because I'm too lazy to create gtkspinbuttonprivate.h) */
+gint gtk_spin_button_get_text_width (GtkSpinButton *spin_button);
+
G_END_DECLS
#endif /* __GTK_ENTRY_PRIVATE_H__ */
return buf;
}
-static void
-gtk_spin_button_get_preferred_width (GtkWidget *widget,
- gint *minimum,
- gint *natural)
+gint
+gtk_spin_button_get_text_width (GtkSpinButton *spin_button)
{
- GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget);
GtkSpinButtonPrivate *priv = spin_button->priv;
- GtkEntry *entry = GTK_ENTRY (widget);
+ gint width, w;
+ PangoLayout *layout;
+ gchar *str;
- GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->get_preferred_width (widget, minimum, natural);
+ layout = pango_layout_copy (gtk_entry_get_layout (GTK_ENTRY (spin_button)));
- if (gtk_entry_get_width_chars (entry) < 0)
- {
- gint width, w;
- PangoLayout *layout;
- gchar *str;
+ /* Get max of MIN_SPIN_BUTTON_WIDTH, size of upper, size of lower */
+ width = MIN_SPIN_BUTTON_WIDTH;
- layout = pango_layout_copy (gtk_entry_get_layout (entry));
+ str = gtk_spin_button_format_for_value (spin_button,
+ gtk_adjustment_get_upper (priv->adjustment));
+ w = measure_string_width (layout, str);
+ width = MAX (width, w);
+ g_free (str);
- /* Get max of MIN_SPIN_BUTTON_WIDTH, size of upper, size of lower */
- width = MIN_SPIN_BUTTON_WIDTH;
+ str = gtk_spin_button_format_for_value (spin_button,
+ gtk_adjustment_get_lower (priv->adjustment));
+ w = measure_string_width (layout, str);
+ width = MAX (width, w);
+ g_free (str);
- str = gtk_spin_button_format_for_value (spin_button,
- gtk_adjustment_get_upper (priv->adjustment));
- w = measure_string_width (layout, str);
- width = MAX (width, w);
- g_free (str);
+ g_object_unref (layout);
- str = gtk_spin_button_format_for_value (spin_button,
- gtk_adjustment_get_lower (priv->adjustment));
- w = measure_string_width (layout, str);
- width = MAX (width, w);
- g_free (str);
+ return width;
+}
- *minimum = width;
- *natural = width;
+static void
+gtk_spin_button_get_preferred_width (GtkWidget *widget,
+ gint *minimum,
+ gint *natural)
+{
+ GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget);
+ GtkSpinButtonPrivate *priv = spin_button->priv;
- g_object_unref (layout);
- }
+ GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->get_preferred_width (widget, minimum, natural);
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{